/**
 * 小红的 ABC
 *
 * 题目描述
 * 小红拿到了一个只包含 'a' , 'b' , 'c' 三种字符的字符串。
 * 小红想知道，这个字符串最短的、长度超过 1 的回文子串的长度是多少？
 * 子串定义：字符串取一段连续的区间。例如"abcca"的子串有"ab"、"bcca"等，但"aca"则不是它的子串。
 * 回文的定义：一个字符串正着读和倒着读都是相同的，那么定义它的回文的。
 *
 * 输入描述:
 * 一个只包含 'a' , 'b' , 'c' 三种字符的字符串。
 * 数据范围：字符串长度不小于2，且不超过100
 *
 * 输出描述:
 * 如果不存在长度超过1的回文子串，则输出-1。
 * 否则输出长度超过1的最短回文子串的长度。
 */

import java.util.Scanner;

/**
 * 其实这题我感觉是可以偷巧的, 为啥呢? 因为他让我们求的是最短的回文串, 回文串是啥
 * 呀, 他是回文的呀~ 既然外面可以回文, 那么里面肯定也是回文的呀, 那让我们求最短的
 * 回文串, 不就是让我们求里面的嘛~ 但是又不能是长度为 1 的, 那么就剩下两种情况了
 * AA ABA 型的, 那么我们只要在一次循环中判断相邻的一个字符还有隔一个的字符就可以
 * 了
 * 时间复杂度 : O(n)
 * 空间复杂度 : O(1)
 */

public class Main {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        char[] nums = in.next().toCharArray();
        int n = nums.length;

        // 结果
        int res = -1;

        // 留一个心眼, 提前到 n - 1 结束
        for (int i = 0; i < n - 1; i++) {

            if (nums[i] == nums[i + 1]) {

                // 这个要在隔一个的前面进行判断, 因为 2 是小于 3 的
                // 提前判断好提前结束
                // 要是有相等的, 这还说啥了, 直接给你就好了
                // 最短了, 没有更短了, 赋值了之后直接返回 break 就可以了
                res = 2;
                break;
            }

            if (i + 2 < n && nums[i] == nums[i + 2]) {

                // 判断隔一个的时候我们要注意判断一下是否会越界
                // 这里成功了的话我们不能直接 break, 因为后续
                // 不知道是否还会有更短的 2 出现, 所以只能一直
                // 判断到最后, 等到结束了没有更短的, 自然会返回
                res = 3;
            }
        }

        // 打印结果
        System.out.println(res);
    }
}